package com.hecate.user.service;

import com.hecate.common.response.HecateResponse;
import com.hecate.user.api.req.dep.FindDepListBySupperDepReq;
import com.hecate.user.api.req.dep.FindDepTreeReq;
import com.hecate.user.api.req.dep.FindFirstLevelDepReq;
import com.hecate.user.api.req.dep.SaveDepReq;
import com.hecate.user.dto.dep.DepDTO;
import com.hecate.user.dto.dep.FindDepListBySupperDepDTO;
import com.hecate.user.dto.dep.FindFirstLevelDepDTO;
import com.hecate.user.dto.dep.SaveDepDTO;

import java.util.Set;

/**
 * 部门服务类
 * @author 黄星星
 * @date 2020-06-13
 */
public interface DepService {

    /**
     * 新增部门
     * @param saveDepReq
     * @return
     */
    HecateResponse<SaveDepDTO> saveDep(SaveDepReq saveDepReq);


    /**
     * 查看顶级部门信息
     * @param findFirstLevelDepReq
     * @return
     */
    HecateResponse<FindFirstLevelDepDTO> findFirstLevelDep(FindFirstLevelDepReq findFirstLevelDepReq);


    /**
     * 查看指定父部门下的所有子部门
     * @param findDepListBySupperDepReq
     * @return
     */
    HecateResponse<FindDepListBySupperDepDTO> findDepListBySupperDep(FindDepListBySupperDepReq findDepListBySupperDepReq);


    /**
     * 查看部门树结构
     * @param findDepTreeReq
     * @return
     */
    HecateResponse<Set<DepDTO>> findDepTree(FindDepTreeReq findDepTreeReq);
}
